// Copyright 叶湘 ( weixin:yexiang841, email:yexiang841@qq.com ), Shitouren Studio. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "Hit/Q3D_CPPE_HitValue.h"
#include "Q3D_CPPU_HitValue.generated.h"

class UQ3D_CPPU_Hit;

/**
 * 
 */
UCLASS(Blueprintable, ClassGroup = (Q3D), meta = (Tooltip = "命中值类型基类(C++)"))
class Q3D_LIB_API UQ3D_CPPU_HitValueBase : public UObject
{
	GENERATED_BODY()

public:
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Q3D_HitModeBase, meta = (Tooltip = "对Hit的引用", ExposeOnSpawn = "true"))
	UQ3D_CPPU_Hit *Ptr_U_Hit;

public:
	UFUNCTION(BlueprintPure, Category = Q3D_HitValueBase, meta = (Tooltip = "读取值类型(整数值/百分比)"))
	virtual void Q3D_F_HitValue_GetEnum(UPARAM(DisplayName = "enum_hit_value") EQ3D_CPPE_HitValue &enum_hit_value) const;

	UFUNCTION(BlueprintPure, Category = Q3D_HitValueBase, meta = (Tooltip = "计算最终伤害值"))
	virtual void Q3D_F_HitValue_Get(UPARAM(DisplayName = "int_hit_value") int32 &int_hit_value) const;
};

UCLASS(Blueprintable, ClassGroup = (Q3D), meta = (Tooltip = "整数值命中值类(C++)"))
class Q3D_LIB_API UQ3D_CPPU_HitValueInt : public UQ3D_CPPU_HitValueBase
{
	GENERATED_BODY()

public:
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Q3D_HitValueInt, meta = (Tooltip = "伤害值(正整数)", ExposeOnSpawn = "true"))
	int32 Int_Value_Int;

public:
	virtual void Q3D_F_HitValue_GetEnum(EQ3D_CPPE_HitValue &enum_hit_value) const override;

	virtual void Q3D_F_HitValue_Get(int32 &int_hit_value) const override;
};

UCLASS(Blueprintable, ClassGroup = (Q3D), meta = (Tooltip = "最大值百分比命中值类型(C++)"))
class Q3D_LIB_API UQ3D_CPPU_HitValuePercentByMax : public UQ3D_CPPU_HitValueBase
{
	GENERATED_BODY()

public:
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Q3D_HitValuePercentByMax, meta = (Tooltip = "伤害百分比(按最大值)", ExposeOnSpawn = "true"))
	float Float_PercentByMax;

public:
	virtual void Q3D_F_HitValue_GetEnum(EQ3D_CPPE_HitValue &enum_hit_value) const override;

	virtual void Q3D_F_HitValue_Get(int32 &int_hit_value) const override;
};

UCLASS(Blueprintable, ClassGroup = (Q3D), meta = (Tooltip = "当前值百分比命中值类型(C++)"))
class Q3D_LIB_API UQ3D_CPPU_HitValuePercentByNow : public UQ3D_CPPU_HitValueBase
{
	GENERATED_BODY()

public:
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Q3D_HitValuePercentByNow, meta = (Tooltip = "伤害百分比(按当前值)", ExposeOnSpawn = "true"))
	float Float_PercentByNow;

public:
	virtual void Q3D_F_HitValue_GetEnum(EQ3D_CPPE_HitValue &enum_hit_value) const override;

	virtual void Q3D_F_HitValue_Get(int32 &int_hit_value) const override;
};
